package ewu

import ewu._
import gui._

/**
 * Die abstrakte Klasse Anweisung enthält die Variable "number", welche die
 * jeweilige Zeilennummerierung der entsprechenden Anweisung speichert.
 * Außerdem gibt es noch die trace-Methode, welche die aktuelle Umgebung
 * ausgeben soll. Die propagate-Methode propagiert sämtliche logischen
 * Zusicherungen.
*/

import scala.collection.mutable.ArrayBuffer

abstract class Anweisung {

  var number: List[Int] = List()
  var tabs: Int = 0

  def numerate(num: List[Int])
  def tabbate(i: Int)
  
  def propagate(assV: Anweisung, assN: Anweisung): Anweisungsfolge
  def propagate(assI: Anweisung): Anweisungsfolge

  def trace(env: Environment, aenv: ArrayEnvironment, tt: Layout, h: Int): (String, Boolean, Int)
  
  def toTabString: String
  def getVariables(a: ArrayBuffer[Name])
  def replaceVariable(fromVar: Name, toVar: Expression)
  
  def setBound(bnd: Bound): Unit = null

}